﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
using System.Drawing;
using Website.Logger;
using DAL;
using BOL;
using System.Web.Script.Services;
using System.Web.Services;
using UtilityExtensions;
using WebLib;

namespace UILGestion.ObraAdmin
{
    public partial class ComparativoEditForm : System.Web.UI.Page
    {
        [WebMethod(), ScriptMethod()]
        public static string GetRecursos(String prefixText, String contextKey)
        {

            dbGestionDataContext _db =
                new dbGestionDataContext(Parametros.strConnString);

            var p = (from a in _db.view_Insumo
                     where (a.codigo + a.descripcion).Contains(prefixText) &
                     a.idPadre==17003
                                      select new  {
                         a.idInternal,
                         a.codigo,
                         a.descripcion,
                         a.unidad}).Take(10);



            return Util.Tbl2Str(Util.EntidadToDataTable(p));

        }
        [WebMethod(), ScriptMethod()]
        public static string GetProveedor(String prefixText, String contextKey)
        {

            ProveedorBL bol = new ProveedorBL();
            return bol.getProveedorAll(prefixText, 20);
        }

        //[WebMethod(), ScriptMethod()]
        //public static string GetRecursoContrata(String prefixText, String contextKey)
        //{

           
        //        var p = (from a in _db.view_Insumo
        //                 where (a.codigo + a.descripcion).Contains(prefixText) &
        //                 a.idAbuelo == 4
        //                 select new
        //                 {
        //                     a.codigo,
        //                     a.descripcion,
        //                     a.unidad

        //                 }).Take(30);

        //        dbGestionDataContext _ge = new dbGestionDataContext(Parametros.strConnString);

        //        return Util.Tbl2Str(Util.EntidadToDataTable(p));
        //    }

        //}



        private void restriccionesForm()
        {
            //--------------------
            int idEmpleadoEmisor = int.Parse(System.Web.HttpContext.Current.Session["idEmpleado"].ToString());

            bool acceso = new DAL.FormularioAcceso().VerificarAcceso(DbUtil.Db,
               idEmpleadoEmisor,
               2,
               int.Parse(idObra.Value),
               3);
            //------------------------- 
            // los paneles presentes en el formulario
            pnlMain.Visible = true;
            AddECItemParent.Visible = true;
            PanelButtom.Visible = true;
            PanelBody.Visible = true;

            //-----------------------------
            
        }
        

        private void FormatForm()
        {
            //--------------------

            restriccionesForm();
         
            idAcen.Value = false.ToString();
            
            
            idComparativoProveedorList.Value = Parametros.GenerarID().ToString();
            idColeccionList.Value = Parametros.GenerarID().ToString();
            
            fechaInsertTextBox.Text = DateTime.Now.ToShortDateString();
           ShowAllComboBoxNew();
            readObject();
            
           
            BindDataProveedor();
            BindDataItemComparativo();
            setEstadistica();
        }




        private void readObject()
        {
           

            ComparativoBL comp = new ComparativoBL();
            ComparativoInfo comparativo = comp.LoadComparativo(int.Parse(internalid.Value));
            //var q1 = from i in _db.view_Comparativo
            //         where i.idInternal == int.Parse(internalid.Value)
            //         select i;

            //comparativo = q1.First();
            DataSet ds = new DataSet();

            
            DataTable Itemcomparativo = Util.EntidadToDataTable(comp.getComparativoItemEditList(int.Parse(internalid.Value)));
            
            DataTable proveedor = Util.EntidadToDataTable(comp.getComparativoProveedorInfo(int.Parse(internalid.Value)));
                
            

            idObra.Value = comparativo.idObra.ToString();
            numDocumentoTextBox.Text = comparativo.numDocumento;
            descripcionInsertTextBox.Text = comparativo.descripcion;
            fechaInsertTextBox.Text = comparativo.fecha.ToShortDateString();
            monedaDropDownList.SelectedValue= comparativo.idMoneda.ToString();
            //totalBaseLabel.Text = comparativo.totalBaseMon.ToString();
            estrcuturaHLNK.Text = comparativo.estructura;
            estrcuturaHLNK.NavigateUrl = string.Format("~/ObraAdmin/EstructuraCompras/EstructuraCostoEditForm.aspx?idObra={0}&id={1}", idObra.Value, comparativo.idEstructuraCosto);
            
            tipoCambioContratoLabel.Text = comparativo.tipoCambio.ToString();
            observacionesInsertTextBox.Text = comparativo.observaciones;
            //estructuraDropDownList.SelectedValue = comparativo.idgrupo.ToString();
            idEstructuraCosto.Value = comparativo.idEstructuraCosto.ToString();
            estructuraCostoDropDownList.SelectedValue = comparativo.idEstructuraCosto.ToString();
            estructuraCostoDropDownList.Enabled = false;
            simbolMonCompLabel.Text=comparativo.simbol;
            //estadoLabel.Text = comparativo.estado;
            //Itemcomparativo.TableName = "ComparativoItemInfo";
            //proveedor.TableName = "ComparativoProveedorInfo";

            

            //validacion si existe ya ordenes de compra realizadas para este comparativo

            var q = from a in DbUtil.Db.OrdenCompras
                    where a.idComparativo == int.Parse(internalid.Value)
                    select a;

            if (q.Count() > 0)
            {
                fechaInsertTextBox.Enabled = false;
                descripcionInsertTextBox.Enabled = false;
                monedaDropDownList.Enabled = false;
            }
            //validamos que no pueda modificar el proveedor

            if (comparativo.ProveedorSelec != null)
            {
                if (comparativo.totalUsoEnOrdenCompraMon > 0)
                {

                    proveedorGridView.ShowFooter = false;
                    
                }

            }

            ds.Tables.Add(Itemcomparativo);
            ds.Tables.Add(proveedor);
            ds.AcceptChanges();
            Session[idColeccionList.Value] = ds;





        }
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {


                if (!Page.IsPostBack)
                {

                    
                    idObra.Value = (string)Request.QueryString["idObra"];
                    internalid.Value = (string)Request.QueryString["id"];

                    menuObraCtrl1.loadMenu(int.Parse(idObra.Value), Request.AppRelativeCurrentExecutionFilePath);
                   

                    FormatForm();

               

                }


            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }

   
    


        private void setEstadistica()
        {
            DataSet itemList=
                (DataSet)Session[idColeccionList.Value];

            totalBaseTextBox.Text = "0";
            
            
            if (itemList.Tables["ComparativoItemInfo"].AsEnumerable().Where(p=>p.RowState!=DataRowState.Deleted).Count() > 0)
                {

                    string moneda = itemList.Tables["ComparativoItemInfo"].AsEnumerable().Where(p => p.RowState != DataRowState.Deleted).ElementAt(0).Field<string>("simbolBase").ToString();

                    decimal totalBase = (from a in itemList.Tables["ComparativoItemInfo"].AsEnumerable().Where(p=>p.RowState!=DataRowState.Deleted)
                                        select a).Sum(p=>p.Field<decimal>("totalComparar"));

                    decimal totalBaseOrig = (from a in itemList.Tables["ComparativoItemInfo"].AsEnumerable().Where(p => p.RowState != DataRowState.Deleted)
                                             select a).Sum(p => p.Field<decimal>("totalBaseOrig"));

                
                    totalBaseTextBox.Text = moneda + " "+ totalBaseOrig.ToString("N");

                    }

            if (itemList.Tables["ComparativoProveedorInfo"].AsEnumerable().Where(p => p.RowState != DataRowState.Deleted).Count() > 0)
            {
                var row = itemList.Tables["ComparativoProveedorInfo"].AsEnumerable().Where(p => p.RowState != DataRowState.Deleted);

                proveedor1LBL.Text="";
                total1TXT.Text="";

                if (row.Count()>=1)
                {
                proveedor1LBL.Text = row.ElementAt(0).Field<string>("descripcion") ;
                total1TXT.Text = string.Format("{0} {1:N} ", row.ElementAt(0).Field<string>("simbol"), row.ElementAt(0).Field<decimal>("total"));

                }

                
                if (row.Count() >= 2)
                {
                    proveedor2LBL.Text = row.ElementAt(1).Field<string>("descripcion");
                    total2TXT.Text = string.Format("{0} {1:N} ", row.ElementAt(1).Field<string>("simbol"), row.ElementAt(1).Field<decimal>("total"));

                }
                if (row.Count() >= 3)
                {
                    proveedor3LBL.Text = row.ElementAt(2).Field<string>("descripcion");
                    total3TXT.Text = string.Format("{0} {1:N} ", row.ElementAt(2).Field<string>("simbol"), row.ElementAt(2).Field<decimal>("total"));

                }

                
            }
            panelTotal.Update();
            
            
        }
        private void BindDataItemComparativo()
        {


            //cambioMoneda();
            
            DataSet ds;
            ds = (DataSet)Session[idColeccionList.Value.ToString()];



            //if (ds.Tables["ComparativoItemInfo"].AsEnumerable().Where(p=>p.RowState!=DataRowState.Deleted).Count() > 0)
            //{
            //   // MonedaSeleccionDropDownList.Enabled = false;
            //    estructuraCostoDropDownList.Enabled=false;
                
            //}
            //else
            //{
            //    //MonedaSeleccionDropDownList.Enabled = true;
            //    estructuraCostoDropDownList.Enabled = true;
            //}




            itemGridView.DataSource = ds;
            itemGridView.DataBind();

        

            panelGrilla.Update();
    
        }
        private void ShowAllComboBoxNew()
        {
           


                //var we = from a in DbUtil.Db.Estructuras
                //         select a;
                ////cabecera de combo
                //Estructura es = new Estructura();
                //es.descripcion = "-----Selecciones Grupo-------";
                //es.idInternal = 0;

                //List<Estructura> listagrupoEstructura = new List<Estructura>();
                //listagrupoEstructura.Add(es);
                //listagrupoEstructura.AddRange(we.ToList());



                //Moneda
                idMonedaList.Value = Parametros.GenerarID().ToString();
                idFormaPagoList.Value = Parametros.GenerarID().ToString();

                var monedaq = from a in DbUtil.Db.Monedas
                              select a;

                var formaPagoq= from a in DbUtil.Db.FormaPago
                               select a;

                List<Moneda> monedaList = monedaq.ToList();
                List<FormaPago> formaPagoList = formaPagoq.ToList();

                Session[idMonedaList.Value] = monedaList;
                Session[idFormaPagoList.Value] = formaPagoList;

                //Estructura de costos


                var e = from i in DbUtil.Db.EstructuraCostos
                        where i.idObra == int.Parse(idObra.Value) 
                        orderby i.descripcion
                        select i;


                // cabecera de combo//
                EstructuraCosto view = new EstructuraCosto();
                view.descripcion = "-------Seleccion de Estructura -----";
                view.idInternal = 0;

                List<EstructuraCosto> listaEC = new List<EstructuraCosto>();
                listaEC.Add(view);
                listaEC.AddRange(e.ToList());



                estructuraCostoDropDownList.DataTextField = "descripcion";
                estructuraCostoDropDownList.DataValueField = "idInternal";


                estructuraCostoDropDownList.DataSource = listaEC;
                estructuraCostoDropDownList.DataBind();

                var ListMoneda = DbUtil.Db.Monedas;


                //Moneda de seleccion de recursos
                MonedaSeleccionDropDownList.DataTextField = "descripcion";
                MonedaSeleccionDropDownList.DataValueField = "idInternal";

                MonedaSeleccionDropDownList.DataSource = ListMoneda;
                MonedaSeleccionDropDownList.DataBind();

                monedaDropDownList.DataTextField = "descripcion";
                monedaDropDownList.DataValueField = "idInternal";

                monedaDropDownList.DataSource = ListMoneda;
                monedaDropDownList.DataBind();


                Obra obra = DbUtil.Db.Obras.Single(a => a.idInternal == int.Parse(idObra.Value));
                if (obra.incluyeIGV.Value)
                {
                    IncluyeIGVLabel.Text = "Si  Incluyen IGV";
                }
                else
                {
                    IncluyeIGVLabel.Text = "No Incluyen IGV";
                }

                //tipoCambioContratoLabel.Text = obra.tipoCambio.ToString();

                //Comparativo comparativo = new Comparativo();
                //numDocumentoTextBox.Text = comparativo.getCorrelativo(DbUtil.Db, int.Parse(idObra.Value));

           

        }


        //private List<view_Comparativo> GetViewObjectEntity(int id)
        //{
           

        //    List<view_Comparativo> objectList = new List<view_Comparativo>();
        //    view_Comparativo obj = new view_Comparativo();
        //    obj.totalBase = 0;



        //    var query = from p in DbUtil.Db.view_Comparativo
        //                where p.idInternal == id
        //                select p;

        //    if (query.Count() > 0)
        //        obj = query.First();

        //    objectList.Add(obj);
        //    return objectList;
        //}
        private DAL.Comparativo GetObjectEntity(int id)
        {
           

            DAL.Comparativo obj = new DAL.Comparativo();

            var query = from p in DbUtil.Db.Comparativos
                        where p.idInternal == id
                        select p;

            if (query.Count() > 0)
                obj = query.First();

            return obj;
        }
       


        protected void btnContinue_OnClick(object sender, EventArgs e)
        {
         

            try
            {
                
             
            if ((sender as Button).Text == RestablecerButton.Text)
            {
                FormatForm();
            }
            if ((sender as Button).Text == saveButton.Text)
            {
                saveButton.Enabled = false;
                
            System.IFormatProvider MiFp =
                new System.Globalization.CultureInfo("es-ES", false);

                        
            DataSet dataSet =(DataSet)Session[idColeccionList.Value];

                                   

           ComparativoBL objectBL = new ComparativoBL();

                bool result = objectBL.update(int.Parse(internalid.Value),
                    
                       DateTime.ParseExact(fechaInsertTextBox.Text, "dd/MM/yyyy", MiFp),
                    
                    descripcionInsertTextBox.Text,
                    int.Parse(monedaDropDownList.SelectedValue),
                    observacionesInsertTextBox.Text,
                    dataSet);

                if (result)
                {
                    Response.Redirect("ComparativoReadForm.aspx?id=" + internalid.Value + "&idObra=" + idObra.Value, false);
                }

            }
            if ((sender as Button).Text == cancelarButton.Text)
            {
                Response.Redirect("ComparativoReadForm.aspx?idObra="+idObra.Value+"&id="+internalid.Value);
            }
            if ((sender as Button).Text == EliminarButton.Text)
            {
                ComparativoBL comparativo = new ComparativoBL();
                bool result = comparativo.delete(int.Parse(internalid.Value));
                if (result)
                {
                    Response.Redirect("ComparativoListForm.aspx?idObra=" + idObra.Value, false);
                }
            }

              
                   }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);
                saveButton.Enabled = true;

            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);
                saveButton.Enabled = true;
            }
        }

        //private void editObject(int id)
        //       {


        //           List<view_Comparativo> obj = new List<view_Comparativo>();
        //           List<ComparativoItemInfo> dsItem;
        //           obj = GetViewObjectEntity(id);
        //           dsItem = GetViewObjectItemEntity(id);
        //           PopulateObjectForm(obj);




        //           itemGridView.DataSource = dsItem;
        //           itemGridView.DataBind();

        //           itemGridView.Columns[itemGridView.Columns.Count - 1].Visible = true;
        //           itemGridView.Columns[itemGridView.Columns.Count - 2].Visible = true;
        //           itemGridView.FooterRow.Visible = true;

        //       }

        protected void entityForm_ModeChanging(object sender, FormViewModeEventArgs e)
        {


        }

      

        #region "seleccion de proveedores"
        protected void accionRecurso_Click(object sender, EventArgs e)
        {
            if (((LinkButton)sender).ID == "AgregarSubContrataLinkButton")
            {
                itemGridView.FooterRow.Visible = true;

            }
        }
        
        #endregion
        #region "item"

        protected void OnPaging(object sender, GridViewPageEventArgs e)
        {
            //BindData();
            //GridView1.PageIndex = e.NewPageIndex;
            //GridView1.DataBind();
        }
        //private List<ComparativoItemInfo> delTemplate(ref List<ComparativoItemInfo> ds)
        //{
        //    foreach (DataRow drw in ds.Tables[0].Rows)
        //    {
        //        if (!(drw.RowState == DataRowState.Deleted))
        //        {
        //            if (drw["idInternal"].ToString() == "0")
        //            {
        //                drw.Delete();
        //                break;
        //            }
        //        }
        //    }
        //    return ds;
        //}
        protected void AddNewItem(object sender, EventArgs e)
        {
            try
            {

               
                //string idRecurso = ((TextBox)itemGridView.FooterRow.FindControl("idRecursoInsertTextBox")).Text;
                //string idInsumo = ((TextBox)itemGridView.FooterRow.FindControl("idInsumoInsertTextBox")).Text;
                //string descripcion = ((TextBox)itemGridView.FooterRow.FindControl("descripcionInsertTextBox")).Text;
                //string unidad = ((TextBox)itemGridView.FooterRow.FindControl("unidadInsertTextBox")).Text;
                //string cantidadBase = ((TextBox)itemGridView.FooterRow.FindControl("cantidadBaseInsertTextBox")).Text;
                //string precioBase = ((TextBox)itemGridView.FooterRow.FindControl("precioBaseInsertTextBox")).Text;
                //string totalBase = ((TextBox)itemGridView.FooterRow.FindControl("totalBaseInsertTextBox")).Text;
            
                //string precio1 = ((TextBox)itemGridView.FooterRow.FindControl("precio1InsertTextBox")).Text;
                //string total1 = ((TextBox)itemGridView.FooterRow.FindControl("total1InsertTextBox")).Text;
            
                //string precio2 = ((TextBox)itemGridView.FooterRow.FindControl("precio2InsertTextBox")).Text;
                //string total2 = ((TextBox)itemGridView.FooterRow.FindControl("total2InsertTextBox")).Text;
            
                //string precio3 = ((TextBox)itemGridView.FooterRow.FindControl("precio3InsertTextBox")).Text;
                //string total3 = ((TextBox)itemGridView.FooterRow.FindControl("total3InsertTextBox")).Text;
                //string codigo = ((TextBox)itemGridView.FooterRow.FindControl("codigoInsertTextBox")).Text;


                //List<ComparativoItemInfo> ds;
                //ds = (List <ComparativoItemInfo>) Session[idobjectdsLabel.Value.ToString()];
                //ComparativoItemInfo comparativoItem = new ComparativoItemInfo();
                
                //string str = Guid.NewGuid().ToString();
                //Guid guid = new Guid(str);
                //byte[] _bytes = guid.ToByteArray();
                //int id = ((int)_bytes[0]) | ((int)_bytes[1] << 8) | ((int)_bytes[2] << 16) | ((int)_bytes[3] << 24);


                //drw["idInternal"] = id;
                //drw["descripcion"] = descripcion;
                //drw["unidad"] = unidad;
                //drw["cantidadBase"] = Convert.ToDecimal(cantidadBase);
                //drw["precioBase"] = Convert.ToDecimal(precioBase);

                //drw["totalBase"] = drw.Field<decimal>("cantidadBase") * drw.Field<decimal>("precioBase");
            
                //drw["precio1"] = Convert.ToDecimal(precio1);
                //drw["total1"] = Convert.ToDecimal(total1);
            
                //drw["precio2"] = Convert.ToDecimal(precio2);
                //drw["total2"] = Convert.ToDecimal(total2);
            
                //drw["precio3"] = Convert.ToDecimal(precio3);
                //drw["total3"] = Convert.ToDecimal(total3);
                //drw["codigo"] = codigo;

                //ds.Tables[comparativoItem.GetType().Name].Rows.Add(drw);
                //Session[idobjectdsLabel.Value.ToString()] = ds;
                //BindDataItemComparativo();
                //BindDataProveedor();
                //setEstadistica();
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }
        protected void prov_checkedChanged(object sender, EventArgs e)
        {

        }


        protected void Deleteitem(object sender, EventArgs e)
        {
            try
            {
                ComparativoItemInfo comparativoItem=new ComparativoItemInfo();
                ImageButton lnkRemove = (ImageButton)sender;
                DataSet itemList = (DataSet)Session[idColeccionList.Value.ToString()];
                
                DataRow drw =
                    itemList.Tables["ComparativoItemInfo"].AsEnumerable().Where(p => p.RowState != DataRowState.Deleted).Single(p => p.Field<int>("idInternal") == int.Parse(lnkRemove.CommandArgument.ToString()));

                if (drw.Field<decimal>("totalUso") > 0)
                {
                    throw new Exception("El recurso se encuentra en Orden de Compra");
                }


                drw.Delete();


                Session[idColeccionList.Value.ToString()] = itemList;
                BindDataItemComparativo();
                BindDataProveedor();
                setEstadistica();

            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }
        protected void EditItem(object sender, GridViewEditEventArgs e)
        {
            try
            {
               
               
                    //throw new Exception("No puede editar el recurso existe orden de compra ");


                    itemGridView.EditIndex = e.NewEditIndex;


                    int parent_index = e.NewEditIndex;

                    //GridViewRow row = GridView1.Rows[parent_index];
                    //string txtRepuestointernalid =
                    //    ((Label)itemGridView.Rows[parent_index].FindControl("idInternalLabel")).Text;


                    BindDataItemComparativo();
                    setEditRowItemComparativo(e.NewEditIndex);
                    //itemGridView.FooterRow.Visible = false;
               
               

            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }
        protected void CancelEditItem(object sender, GridViewCancelEditEventArgs e)
        {
            itemGridView.EditIndex = -1;
            BindDataItemComparativo();
            
        }

        //private void cambioMoneda()
        //{
        //    List<ComparativoItemInfo> ItemList = (List<ComparativoItemInfo>)Session[idobjectdsLabel.Value];
        //    List<ComparativoProveedorInfo> proveedoresList = (List<ComparativoProveedorInfo>)Session[idComparativoProveedorList.Value];

        //    string simbol1="";
        //    string moneda1="";
        //    string moneda2 = "";
        //    string moneda3 = "";


        //    foreach (ComparativoProveedorInfo pv in proveedoresList)
        //    {
        //        if (proveedoresList.IndexOf(pv) == 1)
        //        {   
        //            moneda1=pv.moneda;
                   
        //        }
        //        if (proveedoresList.IndexOf(pv) == 2)
        //        {   
        //           moneda2=pv.moneda;
        //        }
        //        if (proveedoresList.IndexOf(pv) == 3)
        //        {   
        //            moneda3=pv.moneda;
        //        }
        //    }


        //    foreach (var drw in ItemList)
        //        {
        //                drw.simbol1= simbol1;

        //                drw.precio1Mon= drw.simbol1 + " " + drw.precio1.ToString();
        //                drw.total1Mon = drw.simbol1.ToString() + " " + drw.total1.ToString();
                        
                        
        //                drw.simbol2 = simbol2;
        //                drw.precio2Mon = drw.simbol2.ToString() + " " + drw.precio2.ToString();
        //                drw.total2Mon = drw.simbol2.ToString() + " " + drw.total2.ToString();
                        
        //                drw.simbol3 = simbol3;
        //                drw.precio3Mon = drw.simbol3.ToString() + " " + drw.precio3.ToString();
        //                drw.total3Mon= drw.simbol3.ToString() + " " + drw.total3.ToString();
        //            }
                
         
        //    Session[idobjectdsLabel.Value]=ItemList;
        //}



        protected void ComparativoitemGridView_RowCreated(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                if (e.Row.DataItem != null)
                {
                    var totalComparar = (((System.Data.DataRowView)(e.Row.DataItem)).Row).Field<decimal>("totalComparar");
                    var totalBase = (((System.Data.DataRowView)(e.Row.DataItem)).Row).Field<decimal>("totalBase");
                    
                    
                    var precioBase = (((System.Data.DataRowView)(e.Row.DataItem)).Row).Field<decimal>("precioBase");
                    var total1 = (((System.Data.DataRowView)(e.Row.DataItem)).Row).Field<decimal>("total1");
                    var precio1 = (((System.Data.DataRowView)(e.Row.DataItem)).Row).Field<decimal>("precio1");

                    var total2 = (((System.Data.DataRowView)(e.Row.DataItem)).Row).Field<decimal>("total2");
                    var precio2 = (((System.Data.DataRowView)(e.Row.DataItem)).Row).Field<decimal>("precio2");

                    var total3 = (((System.Data.DataRowView)(e.Row.DataItem)).Row).Field<decimal>("total3");
                    var precio3 = (((System.Data.DataRowView)(e.Row.DataItem)).Row).Field<decimal>("precio3");
                    
                   
                    //para ambos casos 
                    if (totalComparar > totalBase)
                    {
                        e.Row.Cells[7].ForeColor = Color.FromName("#CC0000");
                    }

                    
                        //caso de por dinero

                        //proveedor 1
                        if (precio1 <= precioBase)
                        {
                            //verde
                            e.Row.Cells[7].ForeColor = Color.FromName("#009900");
                            if (total1 > totalBase)
                            {
                                e.Row.Cells[7].ForeColor = Color.FromName("#CC0000");
                            }
                        }
                        if (precio1 > precioBase)
                        {

                            //depende si estoy comprando menos
                            if (totalBase >= total1)
                            {
                                //ambar  segun llegue al monto si  aun no pasa del total  disponible
                                e.Row.Cells[7].ForeColor = Color.FromName("#FF6600");

                            }
                            if (totalBase < total1)
                            {
                                //rojo segun llegue al monto
                                e.Row.Cells[7].ForeColor = Color.FromName("#CC0000");
                            }

                        }
                        //Proveedor 2
                        if (precio2 <= precioBase)
                        {
                            //verde
                            e.Row.Cells[8].ForeColor = Color.FromName("#009900");
                            if (total2 >= totalBase)
                            {
                                e.Row.Cells[8].ForeColor = Color.FromName("#CC0000");
                            }
                        }
                        if (precio2 > precioBase)
                        {

                            //depende si estoy comprando menos
                            if (totalBase >= total2)
                            {
                                //ambar  segun llegue al monto si  aun no pasa del total  disponible
                                e.Row.Cells[8].ForeColor = Color.FromName("#FF6600");

                            }
                            if (totalBase < total2)
                            {
                                //rojo segun llegue al monto
                                e.Row.Cells[8].ForeColor = Color.FromName("#CC0000");
                            }

                        }
                        //proveedor 3


                        //Proveedor 2
                        if (precio3 <= precioBase)
                        {
                            //verde
                            e.Row.Cells[9].ForeColor = Color.FromName("#009900");
                            if (total3 >= totalBase)
                            {
                                e.Row.Cells[9].ForeColor = Color.FromName("#CC0000");
                            }
                        }
                        if (precio3 > precioBase)
                        {

                            //depende si estoy comprando menos
                            if (totalBase >= total3)
                            {
                                //ambar  segun llegue al monto si  aun no pasa del total  disponible
                                e.Row.Cells[9].ForeColor = Color.FromName("#FF6600");

                            }
                            if (totalBase < total3)
                            {
                                //rojo segun llegue al monto
                                e.Row.Cells[9].ForeColor = Color.FromName("#CC0000");
                            }

                        }


                   
                }
            }
        }


        protected void ComparativoitemoGridView_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "Select")
            {
                //
                // Se obtiene indice de la row seleccionada
                //
                int index = Convert.ToInt32(e.CommandArgument);

                //
                // Obtengo el id de la entidad que se esta editando
                // en este caso de la entidad Person
                //
                string totalUso = ((GridView)sender).DataKeys[index].Values[1].ToString();
                
            }

        }


        protected void RowDataBoundProveedoritem(Object sender, GridViewRowEventArgs e)
        {

            if (e.Row.RowType == DataControlRowType.DataRow)
            {

                
                //control de cambios para no editar los finalizados 
                if (
                    (((ImageButton)e.Row.Cells[5].Controls[0])).CommandName == "Edit" &
                    (((System.Data.DataRowView)(e.Row.DataItem)).Row).Field<decimal>("totalUso") > 0
                    )
                {
                    (((ImageButton)e.Row.Cells[5].Controls[0])).Visible = false;
                }
            }
        }

        //protected void ComparativoitemoGridView_DataBound(Object sender, EventArgs e)
        //{
        //    DataSet ds = (DataSet)Session[idColeccionList.Value];
            

            

        //    for (int i = 0; i < ds.Tables["ComparativoItemInfo"].Rows.Count; i++)
        //    {

               

        //        LinkButton lb = ((GridView)sender).Rows[i].Controls[0].Controls[6] as LinkButton;
        //        string totalUso = ((GridView)sender).DataKeys[i].Values[1].ToString();

        //        lb.Visible = (Decimal.Parse(totalUso) == 0) ? true : false;
        //    }
        //}
        protected void ComparativoitemoGridView_RowDataBound(Object sender, GridViewRowEventArgs e)
        {


            
            

            if (e.Row.RowType == DataControlRowType.DataRow)
            {

                
                
                //control de cambios para no editar los finalizados 
                if (
                    (((ImageButton)e.Row.Cells[10].Controls[0])).CommandName == "Edit" &
                    (((System.Data.DataRowView)(e.Row.DataItem)).Row).Field<decimal>("totalUso")>0
                    )
                {
                    (((ImageButton)e.Row.Cells[10].Controls[0])).Visible = false;
                }

                //control de cambios para no editar los finalizados 
                if (
                    (((ImageButton)e.Row.Cells[10].Controls[0])).CommandName == "Edit" &
                    (((System.Data.DataRowView)(e.Row.DataItem)).Row).Field<int>("idOrdenCompratemRef") != 0)
                    
                {
                    (((ImageButton)e.Row.Cells[10].Controls[0])).Visible = false;
                }


                if (e.Row.RowState == System.Web.UI.WebControls.DataControlRowState.Normal | e.Row.RowState == System.Web.UI.WebControls.DataControlRowState.Alternate)
                {
                    //Label gv = (Label)e.Row.FindControl("ControlRowLabel");

                    //gv.Text = String.Empty;

                    //var bitControlCant = (((System.Data.DataRowView)(e.Row.DataItem)).Row).Field<bool>("bitControlCant");
                    
                    



                    //if (bitControlCant)
                    //{
                    //    gv.Text = "Por Unidades";
                    //}
                    //else
                    //{
                    //    gv.Text = "Por Dinero";
                    //}
                }
                else
                {
                    if (e.Row.RowState == (System.Web.UI.WebControls.DataControlRowState.Alternate | System.Web.UI.WebControls.DataControlRowState.Edit))
                    {

                        //RadioButtonList gv = (RadioButtonList)e.Row.FindControl("controlRadioButtonList");

                        //var bitControlCant = (((System.Data.DataRowView)(e.Row.DataItem)).Row).Field<bool>("bitControlCant");
                    
                        

                        //if (bitControlCant)
                        //{
                        //    gv.SelectedValue = "0";
                        //}
                        //else
                        //{
                        //    gv.SelectedValue = "1";
                        //}
                    }

                }




            }
        }
   
      

        protected void UpdateItem(object sender, GridViewUpdateEventArgs e)
        {
            try
            {    string idInternal = ((GridView)sender).DataKeys[e.RowIndex].Values[0].ToString();
            DataSet itemList = (DataSet)Session[idColeccionList.Value.ToString()];
            var dr = itemList.Tables["ComparativoItemInfo"].AsEnumerable().Where(p=>p.RowState!=DataRowState.Deleted)
                 .Single(p => p.Field<int>("idInternal") == int.Parse(idInternal));
               


                string strcantidadComparar = ((TextBox)itemGridView.Rows[e.RowIndex].FindControl("cantidadCompararEditTextBox")).Text;
                string strcantidadBase = ((TextBox)itemGridView.Rows[e.RowIndex].FindControl("cantidadBaseEditTextBox")).Text;
                
                string totalOC = itemGridView.DataKeys[e.RowIndex].Values[1].ToString();
                if (decimal.Parse(totalOC) >0)
                {
                    throw new Exception("El recurso se encuentra en Orden de Compra");
                }


                dr["cantidadBase"] = decimal.Parse(strcantidadComparar);
                dr["totalComparar"] = Math.Round(dr.Field<decimal>("cantidadBase") * dr.Field<decimal>("precioBase"), 4);
                dr["bitControlCant"] = true;


                itemGridView.Columns[7].Visible = true;
                itemGridView.Columns[8].Visible = true;
                itemGridView.Columns[9].Visible = true;

                
                string precio1 = ((TextBox)itemGridView.Rows[e.RowIndex].FindControl("precio1EditTextBox")).Text;

                if (precio1 == "") { precio1 = "0"; }
                string total1 = ((TextBox)itemGridView.Rows[e.RowIndex].FindControl("total1EditTextBox")).Text;
                if (total1 == "") { total1 = "0"; }

                string precio2 = ((TextBox)itemGridView.Rows[e.RowIndex].FindControl("precio2EditTextBox")).Text;
                if (precio2 == "") { precio2 = "0"; }
                string total2 = ((TextBox)itemGridView.Rows[e.RowIndex].FindControl("total2EditTextBox")).Text;
                if (total2 == "") { total2 = "0"; }

                string precio3 = ((TextBox)itemGridView.Rows[e.RowIndex].FindControl("precio3EditTextBox")).Text;
                if (precio3 == "") { precio3 = "0"; }
                string total3 = ((TextBox)itemGridView.Rows[e.RowIndex].FindControl("total3EditTextBox")).Text;
                if (total3 == "") { total3 = "0"; }



                //dr.cantidadComparar = decimal.Parse(strcantidadComparar);
                //dr.totalComparar = dr.cantidadComparar * dr.precioBase;
                dr["totalCompararMon"] =string.Format("{0} {1:N}", dr["simbolBase"] ,dr["totalComparar"]);
                                
                                dr["precio1"]=decimal.Parse(precio1);
                                dr["precio1Mon"] =string.Format("{0} {1:N4}",dr["simbol1"], decimal.Parse(precio1));
                                dr["total1"] = dr.Field<decimal>("cantidadBase") * decimal.Parse(precio1);
                                dr["total1Mon"] =string.Format("{0} {1:N4}", dr["simbol1"] ,decimal.Parse(total1));
                      
                                dr["precio2"] = decimal.Parse(precio2);
                                dr["precio2Mon"] = string.Format("{0} {1:N4}",dr["simbol1"],decimal.Parse(precio2));
                                dr["total2"] = dr.Field<decimal>("cantidadBase") * decimal.Parse(precio2);
                                dr["total2Mon"] = string.Format("{0} {1:N4}",dr["simbol1"],decimal.Parse(total2));
                     
                                dr["precio3"] = decimal.Parse(precio3);
                                dr["precio3Mon"] =string.Format("{0} {1:N4}", dr["simbol1"], decimal.Parse(precio3));
                                dr["total3"] = dr.Field<decimal>("cantidadBase") * decimal.Parse(precio3);
                                dr["total3Mon"] =string.Format("{0} {1:N4}", dr["simbol1"] , decimal.Parse(total3));
                      
                        

                //var q = 
                //    from a in ds.Tables[comparativoItem.GetType().Name].AsEnumerable().
                //        Where(p=>p.RowState!=DataRowState.Deleted)
                //        where a.Field<int>("idPadre")==int.Parse(idInternal)
                //        select a;
                //if (q.Count()>0)
                //{
                         
                //    foreach(var item in q)
                //    {
                //        //cuadrando cantidad base
                //        decimal cantidadItem = item.Field<decimal>("cantidadBase");
                //        decimal cantidadSumComparar = decimal.Parse(strcantidadComparar);
                //        decimal cantidadSumBase = decimal.Parse(strcantidadSumBase);
                //        decimal precioBase = item.Field<decimal>("precioBase");

                //        item["cantidadComparar"] = cantidadSumComparar * cantidadItem / cantidadSumBase;
                //        item["totalComparar"] = Math.Round(precioBase * item.Field<decimal>("cantidadBase"), 2);  //regla de 3
                //        item["precio1"] = decimal.Parse(precio1);
                //        item["total1"] = dr.First().Field<decimal>("precio1") * item.Field<decimal>("cantidadComparar");


                //        item["precio2"] = decimal.Parse(precio2);
                //        item["total2"] = dr.First().Field<decimal>("precio2") * item.Field<decimal>("cantidadComparar");

                //        item["precio3"] = decimal.Parse(precio3);
                //        item["total3"] = dr.First().Field<decimal>("precio3") * item.Field<decimal>("cantidadComparar");




                //    }
                //}


                                Session[idColeccionList.Value.ToString()] = itemList;

                itemGridView.EditIndex = -1;


          
                BindDataItemComparativo();
                BindDataProveedor();
                setEstadistica();

            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }

        #endregion

     
        protected void refreshButton_Click(object sender, EventArgs e)
        {
        }

        protected void ProvbtnAdd_OnClick(object sender, EventArgs e)
        {

            string script;
            script =
                String.Format("<script languaje=\"javascript\">var opciones=(\"toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,modal=yes," +
                "resizable=1,width=850,height=400\");" +
                      "window.open(\"ProspectoForm.aspx\",\"\",opciones,false);" +
                      "</script>");
            ClientScript.RegisterStartupScript(this.GetType(), "registro de Prospecto", script);

        }

        protected void estructuraCostoDropDownList_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (((DropDownList)sender).Items.Count > 0)
                {
                    // cargamos las estructuras de costo necesarias 
                    idEstructuraCosto.Value = ((DropDownList)sender).SelectedValue;
                    if (idEstructuraCosto.Value != "0")
                    {

                        

                        findRecurso();
                            
                    }

                }
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }
            

        //private void restricionesFormReadOnly()
        //{

        //    if (!((string)Session["rolid"] == "1"))
        //    {

        //        ((LinkButton)entityFormView.
        //            FindControl("EditButton")).Visible = false;
        //        ((LinkButton)entityFormView.
        //            FindControl("DeleteButton")).Visible = false;

        //        ((LinkButton)entityFormView.
        //           FindControl("NewButton")).Visible = false;
        //    }

        //}

        #region "Add ECItem"

        protected void accionItem_Click(object sender, EventArgs e)
        {
            try
            {
                if (((Button)sender).ID == AgregarRecursoLinkButton.ID)
                {

                    findRecurso();
                    AddRecursoPopup.Show();
                }

                //if (((Button)sender).ID == AddECSelectBTN.ID)
                //{

                //    ECItemSeleccionMonPanel1.LoadRecurso(estructuraCostoDDL.SelectedValue.ToInt(),
                //                        monedaDropDownList.SelectedValue.ToInt(),
                //                        idobjectdsLabel.Value, "");
                //    AddECItemUpdatePanel.Update();
                //    AddRecursoPopup.Show();
                //}
                //if (((Button)sender).ID == addOCSelectBTN.ID)
                //{
                //    // agregar Sub Contrata

                //    List<ComparativoProveedorInfo> comparativoProvList =
                //    (List<ComparativoProveedorInfo>)Session[idComparativoProveedorList.Value];

                //    if (comparativoProvList.Count > 0)
                //    {
                //        ECOCPanel1.LoadRecurso(estructuraCostoDDL.SelectedValue.ToInt(),
                //                            estructuraCostoDDL.SelectedItem.Text,
                //                          comparativoProvList.ElementAt(1).idProveedor,
                //                          comparativoProvList.ElementAt(1).descripcion,
                //                          monedaDropDownList.SelectedValue.ToInt(),
                //                          monedaDropDownList.SelectedItem.Text, idobjectdsLabel.Value);
                //        AddOCPopup.Show();
                //    }



                //}
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }



     
        protected void AddRecurso_Click(object sender, EventArgs e)
        {
            OkAddECItemButton.Enabled = false;
            try
            {

                 if (recursoGridView.SelectedDataKeys.Count > 0)
            {
                ComparativoItemInfo comparativoItem = new ComparativoItemInfo();
               

                    DataSet ds;
                ds = (DataSet)Session[idColeccionList.Value.ToString()];
               

                if (ds.Tables["ComparativoItemInfo"].AsEnumerable().Where(p=>p.RowState!=DataRowState.Deleted).Count() == 0)
                    {
                        monedaDropDownList.SelectedValue = MonedaSeleccionDropDownList.SelectedValue;
                        getTipoCambio();
                    }

               
                foreach (DataKey k in recursoGridView.SelectedDataKeys)
                {

                    
                    
                    ComparativoBL BOL = new ComparativoBL();
                    ComparativoItemInfo CcoItem=BOL.GetCompartivoItemFromEComprasItem(int.Parse(k.Value.ToString()),
                                                                int.Parse(monedaDropDownList.SelectedValue));

                    DataRow drw=Util.EntidadToDataRow(CcoItem);
                    int count = ds.Tables["ComparativoItemInfo"].Rows.Count; 
                   ds.Tables["ComparativoItemInfo"].ImportRow(drw);
                   
                   
                   if (count > 0)
                       ActualizaTipoCambio();


                }


                Session[idColeccionList.Value] = ds;
                
                     
                BindDataItemComparativo();
                BindDataProveedor();
                setEstadistica();
            }
                 OkAddECItemButton.Enabled = true;             
                 AddRecursoPopup.Hide();
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);
                OkAddECItemButton.Enabled = true;

            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);
                OkAddECItemButton.Enabled = true;
            }

        }

       


        protected void cancelAddRecurso_Click(object sender, EventArgs e)
        {
            AddRecursoPopup.Hide();
        }
        private void findRecurso()
        {
            
            DataSet ds1 = (DataSet)Session[idColeccionList.Value];

            //no considerar los finalizados   para que puedan ser ingresados la diferencia
            //debido al proceso de contrato finalizado


            List<int> itemYautilizados =
                (ds1.Tables["ComparativoItemInfo"].AsEnumerable().Where(p => p.RowState != DataRowState.Deleted)
                .Where(p=>p.Field<bool>("bitFinalizado")==false)
                ).Select(p => p.Field<int>("idEstructuraCostoItem")).ToList();
            //actualizar con el nuevo control

            List<EstructuraCostoItemConfInfo> q = new EstructuraCostoBL().getEstructuraCostoItemConfigDisp(
                         int.Parse(estructuraCostoDropDownList.SelectedValue),
                         int.Parse(MonedaSeleccionDropDownList.SelectedValue),
                         itemYautilizados,
                         0,
                         150,"");

            DataSet ds = (DataSet)Session[idColeccionList.Value];
            //debe de restar los que ya se encuentran utilizados

            recursoGridView.ClearSelection(); //importante para no utilizar los que fueron seleccionados




            if (ldSortExpression.Value == "descripcion")
            {
                if (bool.Parse(idAcen.Value))
                    recursoGridView.DataSource = q.OrderBy(p => p.descripcion).ToList();
                else
                    recursoGridView.DataSource = q.OrderByDescending(p => p.descripcion).ToList();

            }
            else if (ldSortExpression.Value == "codigo")
            {

                if (bool.Parse(idAcen.Value))
                    recursoGridView.DataSource = q.OrderBy(p => p.codigo).ToList();
                else
                    recursoGridView.DataSource = q.OrderByDescending(p => p.codigo).ToList();


            }
            else
            {

                recursoGridView.DataSource = q.ToList();


            }
            recursoGridView.DataBind();


            AddECItemUpdatePanel.Update();
        }


        protected void gridview_sorting(object sender, GridViewSortEventArgs e)
        {
            try{

            if (!(ldSortExpression.Value == e.SortExpression))
            {
                ldSortExpression.Value = e.SortExpression;
                idAcen.Value = (!bool.Parse(idAcen.Value)).ToString();
            }


            findRecurso();

            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }







        }

        #endregion




        private void getTipoCambio()
        {
             try
                {

                    ////verificar el tipo de cambio del dia
                    System.IFormatProvider MiFp =
                   new System.Globalization.CultureInfo("es-ES", false);

                    DateTime fechaComparativo = DateTime.ParseExact(fechaInsertTextBox.Text, "dd/MM/yyyy", MiFp);


                    Moneda MonedaCambio = DbUtil.Db.Monedas.Single(p => p.idInternal == int.Parse(monedaDropDownList.SelectedValue));
                    MonedaCambio.getTipoCambio(DbUtil.Db, fechaComparativo).ToString();
                    simbolMonCompLabel.Text = MonedaCambio.simbol;


                }
                catch (Exception ex)
                {
                    updateTipoCambioToBase();
                    WebServerSideError.Log(ex);
                    ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                     "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);
                    OkAddECItemButton.Enabled = true;
                }


         

        }
        private void ActualizaTipoCambio()
        {

            getTipoCambio();
            actualizatipoCambio(simbolMonCompLabel.Text, int.Parse(monedaDropDownList.SelectedValue));
        
            BindDataItemComparativo();
            BindDataProveedor();
            setEstadistica();

                  
        }
        private void actualizatipoCambio(string simbol,int idMoneda)
    {
        
                DataSet itemList = (DataSet)Session[idColeccionList.Value];

                decimal tipoCambio = 1;
                if (idMoneda == 4)
                {
                    tipoCambio = DbUtil.Db.Obras.Single(p => p.idInternal == idObra.Value.ToInt2()).tipoCambio.Value;
                }

                foreach (DataRow a in itemList.Tables["ComparativoItemInfo"].AsEnumerable().Where(p=>p.RowState!=DataRowState.Deleted ))
                {
                    if (a.Field<decimal>("totalUso") != 0)
                    {
                        continue;
                    }
                    
                    
                    if (a.Field<int>("idInternal") == 0)
                    {
                        continue;
                    }

                    decimal tipoCambioNew = tipoCambio;
                   
                        EstructuraCostoItem ec = DbUtil.Db.EstructuraCostoItems.Single(p => p.idInternal == a.Field<int>("idEstructuraCostoItem"));
                        if (ec.idMoneda.Value == idMoneda)
                        {
                           
                            tipoCambioNew = ec.tipoCambio.Value;

                        }
                 

                    a["simbol1"] = simbol;
                    a["precio1"] = Math.Round((a.Field<decimal>("precio1") * a.Field<decimal>("tipoCambio")) / tipoCambioNew, 4);
                    a["precio2"] = Math.Round((a.Field<decimal>("precio2")* a.Field<decimal>("tipoCambio")) / tipoCambioNew, 4);
                    a["precio3"] = Math.Round((a.Field<decimal>("precio3")* a.Field<decimal>("tipoCambio"))/ tipoCambioNew, 4);
                    a["precio1Mon"] = simbol + " " + a.Field<decimal>("precio1").ToString();
                    a["precio2Mon"] = simbol + " " + a.Field<decimal>("precio2").ToString();
                    a["precio3Mon"]= simbol + " " + a.Field<decimal>("precio3").ToString();
                    a["precioBase"] = Math.Round((a.Field<decimal>("precioBase") * a.Field<decimal>("tipoCambio") / tipoCambioNew), 4);
                    a["precioBaseMon"] = simbol + " " + a.Field<decimal>("precioBase").ToString();



                    a["total1"] = Math.Round(a.Field<decimal>("precio1") * a.Field<decimal>("cantidadBase"), 4);
                    a["total1Mon"] = simbol + " " + a.Field<decimal>("total1");

                    
                    a["total2"] = Math.Round(a.Field<decimal>("precio2") * a.Field<decimal>("cantidadBase"), 4);
                    a["total2Mon"] = simbol + " " + a.Field<decimal>("total2");

                    a["total3"] = Math.Round(a.Field<decimal>("precio2") * a.Field<decimal>("cantidadBase"), 4);
                    a["total3Mon"] = simbol + " " + a.Field<decimal>("total2");

                    a["totalBase"] = Math.Round((a.Field<decimal>("totalBase") * a.Field<decimal>("tipoCambio"))/ tipoCambioNew, 4);
                    a["totalBaseMon"] = simbol + " " + a.Field<decimal>("totalBase");

                    a["totalComparar"] = Math.Round((a.Field<decimal>("totalComparar") * a.Field<decimal>("tipoCambio"))/ tipoCambioNew, 4);
                    a["totalCompararMon"] = simbol + " " + a.Field<decimal>("totalComparar");

                    a["totalBaseOrig"] = Math.Round((a.Field<decimal>("totalBaseOrig") * a.Field<decimal>("tipoCambio"))/ tipoCambioNew, 4);
                    a["totalBaseMonOrig"] = simbol + " " + a.Field<decimal>("totalBaseOrig");


                    a["simbolBase"] = simbol;
                    a["tipoCambio"] = tipoCambioNew;

                }

                Session[idColeccionList.Value] = itemList;
               
    }



        #region "Item Proveedor"


        private void BindDataProveedor()
        {

           
            
            DataSet cpitemList = (DataSet)Session[idColeccionList.Value];
            

           //decimal total1=0;
           //decimal total2 = 0;
           //decimal total3 = 0;

            if (cpitemList.Tables["ComparativoProveedorInfo"].Rows.Count > 0)
            {


                for (int i = 1; i < cpitemList.Tables["ComparativoProveedorInfo"].Rows.Count + 1; i++)
           {
               string total = "total" + i.ToString();
               DataRow a = cpitemList.Tables["ComparativoProveedorInfo"].AsEnumerable().ElementAt(i - 1);
               if (i == 1)
               {
                   a.SetField<decimal>("tipoCambio", decimal.Parse(tipoCambioContratoLabel.Text));
                   a["simbol"] = simbolMonCompLabel.Text;
                   itemGridView.Columns[7].HeaderText = a.Field<string>("descripcion");


                   decimal tota1= cpitemList.Tables["ComparativoItemInfo"].AsEnumerable().Where(p=>p.RowState!=DataRowState.Deleted).
                       Sum(p => p.Field<decimal>("total1"));
                   
                   //if (tota1 == 0)
                   //{
                   //    a.SetField<decimal>("total", 0);
                   //}
                   //else
                   //{
                   //    a.SetField<decimal>("total", Math.Round(tota1 / decimal.Parse(tipoCambioContratoLabel.Text), 4));
                   //}

                   a.SetField<decimal>("total", tota1);
                   a["totalContrMon"] = string.Format("{0} {1:N}", a.Field<string>("simbol"), a.Field<decimal>("total"));
                                      
               }
               if (i == 2)
               {
                   a.SetField<decimal>("tipoCambio", decimal.Parse(tipoCambioContratoLabel.Text));
                   a["simbol"] = simbolMonCompLabel.Text;
                   itemGridView.Columns[8].HeaderText = a.Field<string>("descripcion");

                   decimal total2 = cpitemList.Tables["ComparativoItemInfo"].AsEnumerable().Where(p => p.RowState != DataRowState.Deleted).
                       Sum(p => (p.Field<decimal>("total2") ));
                   //if (tota1 == 0)
                   //{
                   //    a.SetField<decimal>("total", 0);
                   //}
                   //else
                   //{
                   //    a.SetField<decimal>("total", Math.Round(tota1 / decimal.Parse(tipoCambioContratoLabel.Text), 4));
                   //}
                   a.SetField<decimal>("total", total2);
                   a["totalContrMon"] = string.Format("{0} {1:N}", a.Field<string>("simbol"), a.Field<decimal>("total"));
               }
               if (i == 3)
               {
                   a.SetField<decimal>("tipoCambio", decimal.Parse(tipoCambioContratoLabel.Text));
                   a["simbol"] = simbolMonCompLabel.Text;
                   itemGridView.Columns[9].HeaderText = a.Field<string>("descripcion");

                   decimal tota1 = cpitemList.Tables["ComparativoItemInfo"].AsEnumerable().Where(p => p.RowState != DataRowState.Deleted).
                       Sum(p => (p.Field<decimal>("total3") * p.Field<decimal>("tipoCambio")));
                   //if (tota1 == 0)
                   //{
                   //    a.SetField<decimal>("total", 0);
                   //}
                   //else
                   //{
                   //    a.SetField<decimal>("total", Math.Round(tota1 / decimal.Parse(tipoCambioContratoLabel.Text), 4));
                   //}
                   a.SetField<decimal>("total", tota1);
                   a["totalContrMon"] = string.Format("{0} {1:N}", a.Field<string>("simbol"), a.Field<decimal>("total"));
               }

           }
              
                
            }
            itemGridView.Columns[7].Visible = false;
            //proveedor2
            itemGridView.Columns[8].Visible = false;
            //proveedor3
            itemGridView.Columns[9].Visible = false;

            for (int i = 0; i < cpitemList.Tables["ComparativoProveedorInfo"].Rows.Count; i++)
            {
                itemGridView.Columns[i + 7].Visible = true;
            }


          
            

            proveedorGridView.DataSource = cpitemList.Tables["ComparativoProveedorInfo"];
            proveedorGridView.DataBind();


            if (proveedorGridView.Rows.Count == 0)
            {
                // agregamos un registro debido al footer
                ComparativoItemInfo drwcero = new ComparativoItemInfo();
                List<ComparativoItemInfo> drw = new List<ComparativoItemInfo>();
                drwcero.idInternal = Parametros.GenerarID();
                drwcero.totalBase = 0;

                drw.Add(drwcero);
                proveedorGridView.DataSource = Util.EntidadToDataTable(drw);
                proveedorGridView.DataBind();
                proveedorGridView.Rows[0].Visible = false;
            }  
            setFooterRowProveedor();
            if (proveedorGridView.DataKeys[0].Values[0].ToString() == "0")
            { proveedorGridView.Rows[0].Visible = false; }

            proveedorGridView.FooterRow.Visible = false;
            
            Comparativo cp=DbUtil.Db.Comparativos.Single(p=>p.idInternal==int.Parse(internalid.Value));
            if(cp.idProveedorSelec!=null)
            {
                //comparativo ya fue ac
                proveedorGridView.FooterRow.Visible = false;
                
            }

            if (cpitemList.Tables["ComparativoProveedorInfo"].Rows.Count > 2)
            {
               
                proveedorGridView.FooterRow.Visible = false;
            }


            Session[idColeccionList.Value] = cpitemList;
            proveedorUpdatePanel.Update();

        }

        protected void DeleteProveedorItem(object sender, EventArgs e)
        {
            try
            {

                ImageButton lnkRemove = (ImageButton)sender;
                int idInternal = int.Parse(lnkRemove.CommandArgument.ToString());
                List<ComparativoProveedorInfo> comparativoProveedorList =
                    (List<ComparativoProveedorInfo>)Session[idComparativoProveedorList.Value.ToString()];

                ComparativoProveedorInfo drw = comparativoProveedorList.Single(p => p.idInternal == idInternal);

                //eliminamos de la coleccion

                comparativoProveedorList.Remove(drw);
                Session[idComparativoProveedorList.Value.ToString()] = comparativoProveedorList;

               
            

               

                BindDataProveedor();
                BindDataItemComparativo();


            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }
        protected void AddProveedorItem(object sender, EventArgs e)
        {
            try
            {

                DataSet comparativoProvList =
                  (DataSet)Session[idColeccionList.Value];


                string idProveedor =
                    ((TextBox)proveedorGridView.FooterRow.FindControl("idproveedorInsertTextBox")).Text;
                string descripcion =
                    ((TextBox)proveedorGridView.FooterRow.FindControl("proveedorInsertTextBox")).Text;
                string condicion = ((TextBox)proveedorGridView.FooterRow.FindControl("condicionInsertTextBox")).Text;
                
                //DropDownList monedaDDL = ((DropDownList)proveedorGridView.FooterRow.FindControl("monedaInsertDropDownList"));
                DropDownList formaPagoDDL = ((DropDownList)proveedorGridView.FooterRow.FindControl("formaPagoInsertDropDownList"));
                

                if (idProveedor == "")
                {
                    throw new Exception("ingrese Proveedor Correcto");
                }

                DataRow item = comparativoProvList.Tables["ComparativoProveedorInfo"].NewRow();

                dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString);
                Moneda moneda = _db.Monedas.Single(p => p.idInternal == int.Parse(monedaDropDownList.SelectedValue));

                item["idinternal"] = Parametros.GenerarID();
                item["idProveedor"] = int.Parse(idProveedor);
                item["descripcion"] = descripcion;
                item["condicion"] = condicion;
                item["idMoneda"] = int.Parse(monedaDropDownList.SelectedValue);
                item["simbol"] = moneda.simbol;
                item["moneda"] = monedaDropDownList.SelectedItem.Text;
                item["idFormaPago"] = int.Parse(formaPagoDDL.SelectedValue);
                item["formaPago"] = formaPagoDDL.SelectedItem.Text;
                item["tipoCambio"] = tipoCambioContratoLabel.Text;

                item["total"] = 0;

                comparativoProvList.Tables["ComparativoProveedorInfo"].Rows.Add(item);
                Session[idComparativoProveedorList.Value.ToString()] = comparativoProvList;
                //para el ingreso de  proveedores  mostramos las columnas necesarioas
                //proveedor1
                //itemGridView.Columns[7].Visible = false;
                ////proveedor2
                //itemGridView.Columns[8].Visible = false;
                ////proveedor3
                //itemGridView.Columns[9].Visible = false;

                //for (int i = 1; i <= comparativoProvList.Tables["ComparativoProveedorInfo"].Rows.Count; i++)
                //{
                //    itemGridView.Columns[i+6].Visible = true;
                //}




                BindDataItemComparativo();
                BindDataProveedor();
                
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }
        protected void UpdateProveedorItem(object sender, GridViewUpdateEventArgs e)
        {
            try
            {
                GridView gv = ((GridView)sender);
                string idProveedor =
                    ((TextBox)gv.Rows[e.RowIndex].FindControl("idproveedorEditTextBox")).Text;
                string proveedor =
                    ((TextBox)gv.Rows[e.RowIndex].FindControl("proveedorEditTextBox")).Text;
                string condicion =
                    ((TextBox)gv.Rows[e.RowIndex].FindControl("condicionEditTextBox")).Text;

                
                int idinternal = int.Parse(gv.DataKeys[e.RowIndex].Values[0].ToString());

               // DropDownList monedaDDL = ((DropDownList)gv.Rows[e.RowIndex].FindControl("monedaEditDropDownList"));
                DropDownList formaPagoDDL = ((DropDownList)gv.Rows[e.RowIndex].FindControl("formaPagoEditDropDownList"));


                DataSet itemList = (DataSet)Session[idColeccionList.Value];

                DataRow item = (from a in itemList.Tables["ComparativoProveedorInfo"].AsEnumerable().Where(p => p.RowState != DataRowState.Deleted)
                               where a.Field<int>("idinternal") == idinternal
                               select a).First();
                


                //using (dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString))
                //{
                //    moneda = _db.Moneda.Single(p => p.idInternal == int.Parse(monedaDropDownList.SelectedValue));


                //}


                item["idProveedor"] = int.Parse(idProveedor);
                item["descripcion"] = proveedor;
                item["condicion"] = condicion;
                //item.idMoneda = moneda.idInternal;
                //item.moneda = moneda.descripcion;
                //item.simbol = moneda.simbol;
                item["formaPago"] = formaPagoDDL.SelectedItem.Text;
                item["idFormaPago"] = int.Parse(formaPagoDDL.SelectedValue);



                Session[idColeccionList.Value.ToString()] = itemList;

                gv.EditIndex = -1;

                BindDataItemComparativo();
                BindDataProveedor();
                setEstadistica();


            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }
        protected void EditProveedorItem(object sender, GridViewEditEventArgs e)
        {
            try
            {
                proveedorGridView.EditIndex = e.NewEditIndex;
                BindDataProveedor();
                setEditRowProveedor(e.NewEditIndex);
                proveedorGridView.FooterRow.Visible = false;
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }
        protected void CancelProveedorItem(object sender, GridViewCancelEditEventArgs e)
        {
            try
            {
                proveedorGridView.EditIndex = -1;
                BindDataProveedor();


            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }


        private void setFooterRowProveedor()
        {
            List<FormaPago> formaPagoList=(List<FormaPago>)Session[idFormaPagoList.Value];
            List<Moneda> monedaList=(List<Moneda>)Session[idMonedaList.Value];

            //DropDownList monedaDropDownList = ((DropDownList)proveedorGridView.FooterRow.FindControl("monedaInsertDropDownList"));
            DropDownList formaPagoDropDownList = ((DropDownList)proveedorGridView.FooterRow.FindControl("formaPagoInsertDropDownList"));


            //monedaDropDownList.DataValueField = "idInternal";
            //monedaDropDownList.DataTextField = "descripcion";
            //monedaDropDownList.DataSource = monedaList;
            //monedaDropDownList.DataBind();

            formaPagoDropDownList.DataValueField = "idInternal";
            formaPagoDropDownList.DataTextField = "descripcion";
            formaPagoDropDownList.DataSource = formaPagoList;
            formaPagoDropDownList.DataBind();




        }
        private void setEditRowProveedor(int i)
        {
            List<FormaPago> formaPagoList = (List<FormaPago>)Session[idFormaPagoList.Value];
            List<Moneda> monedaList = (List<Moneda>)Session[idMonedaList.Value];

            //DropDownList monedaDropDownList = ((DropDownList)proveedorGridView.Rows[i].FindControl("monedaEditDropDownList"));
            DropDownList formaPagoDropDownList = ((DropDownList)proveedorGridView.Rows[i].FindControl("formaPagoEditDropDownList"));
            
            //TextBox monedaText= ((TextBox)proveedorGridView.Rows[i].FindControl("monedaEditTextBox"));
            TextBox formaPagoText = ((TextBox)proveedorGridView.Rows[i].FindControl("formaPagoEditTextBox"));


            //monedaDropDownList.DataValueField = "idInternal";
            //monedaDropDownList.DataTextField = "descripcion";
            //monedaDropDownList.DataSource = monedaList;
            //monedaDropDownList.DataBind();

            formaPagoDropDownList.DataValueField = "idInternal";
            formaPagoDropDownList.DataTextField = "descripcion";
            formaPagoDropDownList.DataSource = formaPagoList;
            formaPagoDropDownList.DataBind();

            //monedaDropDownList.SelectedValue = monedaText.Text;
            formaPagoDropDownList.SelectedValue = formaPagoText.Text;


        }


        private void setEditRowItemComparativo(int i)
        {

           

            //DropDownList monedaDropDownList = ((DropDownList)proveedorGridView.Rows[i].FindControl("monedaEditDropDownList"));
           // RadioButtonList controlRadioButtonList = ((RadioButtonList)itemGridView.Rows[i].FindControl("controlRadioButtonList"));
            //TextBox controlRadioEditTextBox = ((TextBox)itemGridView.Rows[i].FindControl("controlRadioEditTextBox"));
            //TextBox controlRadioOrigEditTextBox = ((TextBox)itemGridView.Rows[i].FindControl("controlRadioOrigEditTextBox"));

            //verificamos qi tiene uso en ordenes de compra
            

            //if (controlRadioOrigEditTextBox.Text != string.Empty)
            //{
            //    //Ya existe comparativos registrados

            //    controlRadioButtonList.Enabled = false;
            //    controlRadioEditTextBox.Text= controlRadioOrigEditTextBox.Text;
            //}
            
            //if (bool.Parse(controlRadioEditTextBox.Text))
            //{
            //    controlRadioButtonList.SelectedValue = "0";
                
            //}
            //else
            //{
            //    controlRadioButtonList.SelectedValue = "1";
               
            //}
            


        }
        
        

        private void DataBoundProveedorItem(object sender, EventArgs e)
        {

            if (proveedorGridView.ShowFooter == true)
            {
                setFooterRowProveedor();

            }
           

        }

        #endregion



       

        protected void monedaddl_OnSelectedIndexChanged(object sender, EventArgs e)
        {

            try
            {

            //if (int.Parse(MonedaSeleccionDropDownList.SelectedValue) != 3)
            //{

            //    using (dbGestionDataContext _db = new dbGestionDataContext(Parametros.strConnString))
            //    {
            //        var Obra = _db.Obras.Single(p => p.idInternal == int.Parse(idObra.Value));


            //        tipoCambioContratoLabel.Text = Obra.tipoCambio.Value.ToString();

            //    }


            //}
            //else
            //{
            //    //caso de soles
            //    tipoCambioContratoLabel.Text = "1";
            //}
            ////monedaLabel.Text = MonedaSeleccionDropDownList.SelectedItem.Text;
            findRecurso();
            }
            catch (SqlException sqlex)
            {
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }

        }

       #region "Item del proveedor "

       

        //protected void subContrataItem_Click(object sender, EventArgs e)
        //{
        //    try
        //    {
        //        // valors  para  ingreso de contrato
        //        List<ComparativoProveedorInfo> proveedorList= 
        //            (List<ComparativoProveedorInfo>)Session[idComparativoProveedorList.Value];

        //        List<ComparativoItemInfo> ds = (List<ComparativoItemInfo>)Session[idobjectdsLabel.Value];

        //        if (ds.Tables["ComparativoItemInfo"].AsEnumerable().Where(p=>p.RowState!=DataRowState.Deleted).Count() > 1)
        //        {

        //            proveedor1ContrLabel.Text = "";// string.Empty;
        //            simbol1Label.Text = string.Empty;

        //            proveedor2ContrLabel.Text = string.Empty;
        //            simbol2Label.Text = string.Empty;

        //            proveedor3ContrLabel.Text = string.Empty;
        //            simbol3Label.Text = string.Empty;

        //            totalBaseContrTextBox.Text = string.Empty;
        //            simboloBaseContrLabel.Text = string.Empty;
        //            idMonedaBaseContrTextBox.Text = string.Empty;

        //            total1ContrInsertTextBox.Enabled = false;
        //            total2ContrInsertTextBox.Enabled = false;
        //            total3ContrInsertTextBox.Enabled = false;


        //            foreach (var proveedor in proveedorList)
        //            {
        //                if (proveedorList.IndexOf(proveedor) == 1)
        //                {
        //                    proveedor1ContrLabel.Text = proveedor.descripcion;
        //                    total1ContrInsertTextBox.Enabled = true;
        //                    simbol1Label.Text = proveedor.simbol.ToString();
        //                }
        //                if (proveedorList.IndexOf(proveedor) == 2)
        //                {
        //                    proveedor2ContrLabel.Text = proveedor.descripcion;
        //                    simbol2Label.Text = proveedor.simbol.ToString();
        //                    total2ContrInsertTextBox.Enabled = true;
        //                }
        //                if (proveedorList.IndexOf(proveedor) == 3)
        //                {
        //                    proveedor3ContrLabel.Text = proveedor.descripcion;
        //                    simbol3Label.Text = proveedor.simbol.ToString();
        //                    total3ContrInsertTextBox.Enabled = true;
        //                }

        //            }

        //            var item = from a in ds.Tables["ComparativoItemInfo"].AsEnumerable().Where(p => p.RowState != DataRowState.Deleted)
        //                       where a.Field<bool>("bitSel") == true
        //                       select a;

        //            if (item.Count() > 0)
        //            {
        //                totalBaseContrTextBox.Text = item.Sum(p => p.Field<decimal>("totalComparar")).ToString();
        //                simboloBaseContrLabel.Text = item.ElementAt(1).Field<string>("simbolBase");
        //                idMonedaBaseContrTextBox.Text = item.ElementAt(1).Field<int>("idMonedaBase").ToString();
        //            }

        //            itemContratoUpdatePanel.Update();
        //            ContrataPopup.Show();
        //        }
        //    }
        //    catch (SqlException sqlex)
        //    {
        //        WebServerSideSqlError.Log(sqlex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


        //    }
        //    catch (Exception ex)
        //    {
        //        WebServerSideError.Log(ex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

        //    }
        //}

      

        protected void ButtonItemCancel_Click(object sender, EventArgs e)
        {

            //ContrataPopup.Hide();

        }

        //protected void ButtonitemContratoAdd_Click(object sender, EventArgs e)
        //{
           
        //    try
        //    {
 
        //    List<ComparativoItemInfo> ds = (List<ComparativoItemInfo>)Session[idobjectdsLabel.Value];


        //    //1 primero buscamos todas las  registros que tiene el mismo codigo


        //    var coltemplate =
        //        from i in ds.Tables["ComparativoItemInfo"].AsEnumerable().Where(drw => drw.RowState != DataRowState.Deleted)
        //         select i;

        //    // verificamos  que pueda ser agrupado 
        //    if (coltemplate.Count() == 1)
        //    {
        //        throw new Exception("No existe recursos por Contratar");
        //    }

          
        //           DataRow drwnew= ds.Tables["ComparativoItemInfo"].NewRow();


        //           drwnew["idInternal"] = Parametros.GenerarID();
        //            drwnew["idEstructuraCostoItem"]=0;
        //            drwnew["codigo"]=CodigoContrTextBox.Text;
        //            drwnew["descripcion"]=recursoInsertTextBox.Text;
        //            drwnew["unidad"]=UnidadContrTextBox.Text;
        //            drwnew["bitSel"]=true;
        //            drwnew["idPadre"]=0;
        //            drwnew["nivel"]=0;
        //            drwnew["cantidadBase"]=1;
        //            drwnew["totalComparar"]=totalBaseContrTextBox.Text;
        //            drwnew["monedaBase"]=idMonedaBaseContrTextBox.Text;
        //            drwnew["simbolBase"]=simboloBaseContrLabel.Text;

        //            drwnew["totalBaseMon"]=simboloBaseContrLabel.Text+" "+totalBaseContrTextBox.Text;
        //            drwnew["totalCompararMon"]=simboloBaseContrLabel.Text+" "+totalBaseContrTextBox.Text;
        //            drwnew["precioBaseMon"]=simboloBaseContrLabel.Text+" "+totalBaseContrTextBox.Text;

        //            if (total1ContrInsertTextBox.Text != string.Empty)
        //            {
        //                drwnew["total1Mon"] = simbol1Label.Text + " " + total1ContrInsertTextBox.Text;
        //                drwnew["total1"] = total1ContrInsertTextBox.Text;
        //                drwnew["precio1"] = total1ContrInsertTextBox.Text;
        //                drwnew["precio1Mon"] = simbol1Label.Text + " " + total1ContrInsertTextBox.Text;
        //                drwnew["simbol1"] = simbol1Label.Text;
        //            }
        //            if (total2ContrInsertTextBox.Text != string.Empty)
        //            {
        //                drwnew["total2Mon"] = simbol2Label.Text + " " + total2ContrInsertTextBox.Text;

        //                drwnew["total2"] = total2ContrInsertTextBox.Text;
        //                drwnew["precio2"] = total2ContrInsertTextBox.Text;
        //                drwnew["precio2Mon"] = simbol2Label.Text + " " + total2ContrInsertTextBox.Text;
        //                drwnew["simbol2"] = simbol2Label.Text;
        //            }
        //            if (total3ContrInsertTextBox.Text != string.Empty)
        //            {
        //                drwnew["total3Mon"] = simbol3Label.Text + " " + total3ContrInsertTextBox.Text;
        //                drwnew["total3"] = total3ContrInsertTextBox.Text;
        //                drwnew["precio3"] = total3ContrInsertTextBox.Text;
        //                drwnew["precio3Mon"] = simbol3Label.Text + " " + total3ContrInsertTextBox.Text;
        //                drwnew["simbol3"] = simbol3Label.Text;
        //            }

        //            foreach (var item in coltemplate)
        //            {
        //                item["nivel"] = 1;
        //                item["idPadre"] = drwnew["idInternal"];
        //                item["bitsel"] = false;
        //            }

        //         ds.Tables["ComparativoItemInfo"].Rows.Add(drwnew);
        //         Session[idobjectdsLabel.Value.ToString()] = ds;
        //            BindDataItemComparativo();


                   

                 
        //    }
        //    catch (SqlException sqlex)
        //    {
        //        WebServerSideSqlError.Log(sqlex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


        //    }
        //    catch (Exception ex)
        //    {
        //        WebServerSideError.Log(ex);
        //        ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
        //         "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

        //    }

        //}

       #endregion

        protected void monedaDropDownList_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (monedaDropDownList.Items.Count > 0)
                {
                    //ActualizaTipoCambio todo LosFormatter item comparativo a la moneda ingresada

                    ActualizaTipoCambio();
                }

            }
            catch (SqlException sqlex)
            {
                
                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                updateTipoCambioToBase();
                updateTipoCambioToBase();
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
        }
        private void updateTipoCambioToBase()
        {
            
                tipoCambioContratoLabel.Text = "1";
                monedaDropDownList.SelectedValue = "3";
              

                 simbolMonCompLabel.Text = DbUtil.Db.Monedas.Single(p => p.idInternal == 3).simbol;
                

                actualizatipoCambio(simbolMonCompLabel.Text,
                                                int.Parse(monedaDropDownList.SelectedValue));

                BindDataItemComparativo();
                BindDataProveedor();
                setEstadistica();
            
        }


       

        protected void fechaInsertTextBox_TextChanged(object sender, EventArgs e)
        {
            try
            {
                if (monedaDropDownList.Items.Count > 0)
                {
                    //ActualizaTipoCambio todo LosFormatter item comparativo a la moneda ingresada

                    ActualizaTipoCambio();
                                    }
                
            }
            catch (SqlException sqlex)
            {

                WebServerSideSqlError.Log(sqlex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + sqlex.Message.Replace("'", "") + "');", true);


            }
            catch (Exception ex)
            {
                updateTipoCambioToBase();
                WebServerSideError.Log(ex);
                ScriptManager.RegisterClientScriptBlock(this, typeof(Page),
                 "uniqueKey" + DateTime.Now, "alert('" + ex.Message.Replace("'", "") + "');", true);

            }
            
        }

        protected void itemGridView_SelectedIndexChanged(object sender, EventArgs e)
        {

        }
    }

}
